package com.dhnsoft.shortLink.project.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dhnsoft.shortLink.project.dao.entity.LinkAccessStatsDO;
import com.dhnsoft.shortLink.project.dto.req.ShortLinkStatsReqDTO;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * ClassName: LinkAccessStatsMapper
 * Package: com.dhnsoft.shortLink.project.dao.mapper
 * Description: 短链接基础访问监控持久层
 *
 * @Author dhn
 * @Create 2024/4/2 10:34
 * @Version 1.0
 */
public interface LinkAccessStatsMapper extends BaseMapper<LinkAccessStatsDO> {


    @Insert("insert into t_link_access_stats(full_short_url,gid,date,pv,uv,uip,hour,weekday,create_time,update_time,del_flag)" +
            "values(#{linkAccessStats.fullShortUrl},#{linkAccessStats.gid},#{linkAccessStats.date},#{linkAccessStats.pv}" +
            ",#{linkAccessStats.uv},#{linkAccessStats.uip},#{linkAccessStats.hour},#{linkAccessStats.weekday},now(),now(),0)ON DUPLICATE KEY UPDATE pv=pv+#{linkAccessStats.pv}," +
            "uv=uv+#{linkAccessStats.uv},uip=uip+#{linkAccessStats.uip},update_time=now()")
    void shortLinkStats(@Param("linkAccessStats") LinkAccessStatsDO linkAccessStatsDO);


    /**
     * 根据短链接获取指定日期内基础监控数据
     * */
    List<LinkAccessStatsDO> listStatsByShortLink(@Param("param")ShortLinkStatsReqDTO requestParam);

    List<LinkAccessStatsDO> listHourStatsByShortLink(@Param("param")ShortLinkStatsReqDTO requestParam);

    List<LinkAccessStatsDO> listWeekdayStatsByShortLink(@Param("param")ShortLinkStatsReqDTO requestParam);
}
